var editUser = {};
var EditUser = function () {
    var $this = this;
    //初始化
    this.init = function () {
        //查询角色
        layuiFunciton.ajaxRequest({
            url: layuiFunciton.URL + '/sysRole/findRoleList',
            method:'get',
            success:function (data) {
                var roloHtml='';
                $(data).each(function (index,obj) {
                    if(parent.sysRoleList[obj.id]!=undefined)
                        roloHtml+='<input type="checkbox" name="sysRoleList['+index+'].id" value="'+obj.id+'" title="'+obj.roleName+'" checked>';
                    else
                        roloHtml+='<input type="checkbox" name="sysRoleList['+index+'].id" value="'+obj.id+'" title="'+obj.roleName+'">';
                });
                $("#roleId").html(roloHtml);
            }
        });
        $this.checkedCount();
    };
    //监听check
    this.listening = function () {
        layui.use(['form', 'element', 'laydate'], function() {
            var form = layui.form;
            //一级菜单
            form.on('checkbox(menuNameList)', function (data) {
                if (data.elem.checked) {
                    $(data.othis).parent().find("input[type=checkbox]").prop('checked', true);
                } else {
                    if ($(data.othis).parent().attr("class").indexOf(" on") > 0) {
                        $(data.othis).prop('checked', true);
                        $(data.othis).parent().find("input[type=checkbox]").prop('checked', true);
                        $(data.othis).parent().removeClass("on");
                    } else {
                        $(data.othis).parent().find("input[type=checkbox]").prop('checked', false);
                        $(data.othis).parent().removeClass("on");
                    }
                }
                $this.checkedCount();
                form.render();
            });
            //二级菜单
            form.on('checkbox(twoMenu)', function (data) {
                if (data.elem.checked) {
                    $(data.othis).parent().find("input[type=checkbox]").prop('checked', true);
                    $(data.othis).parents(".layui-form-item").next().find("input[type=checkbox]").prop('checked', true);
                } else {
                    if ($(data.othis).parents(".layui-form-item").attr("class").indexOf(" on") > 0) {
                        $(data.othis).prop('checked', true);
                        $(data.othis).parent().find("input[type=checkbox]").prop('checked', true);
                        $(data.othis).parents(".layui-form-item").next().find("input[type=checkbox]").prop('checked', true);
                        $(data.othis).parents(".layui-form-item").removeClass("on");
                    } else {
                        $(data.othis).parent().find("input[type=checkbox]").prop('checked', false);
                        $(data.othis).parents(".layui-form-item").next().find("input[type=checkbox]").prop('checked', false);
                        $(data.othis).parents(".layui-form-item").removeClass("on");
                    }
                }
                $this.checkedCount();
                form.render();
            });
            //三级菜单
            form.on('checkbox(threeMenu)', function (data) {
                if (data.elem.checked) {
                    $(data.othis).parent().next().find("input[type=checkbox]").prop('checked', true);
                } else {
                    if ($(data.othis).parents(".layui-form-item").attr("class").indexOf(" on") > 0) {
                        $(data.othis).prop('checked', true);
                        $(data.othis).parent().next().find("input[type=checkbox]").prop('checked', true);
                        $(data.othis).parents(".layui-form-item").removeClass("on")
                    } else {
                        $(data.othis).parent().next().find("input[type=checkbox]").prop('checked', false);
                        $(data.othis).parents(".layui-form-item").removeClass("on")
                    }
                }
                $this.checkedCount();
                form.render();
            });
            //资源按钮
            form.on('checkbox(metadata)', function (data) {
                $this.checkedCount();
                form.render();
            });
        });
    };
    //计算宣选中的
    this.checkedCount = function () {
        var oneMenuList = $(".layui-colla-item");
        for(var t =0;t<4;t++) {
            for (var i = 0; i < oneMenuList.length; i++) {
                //最高级
                var oneMenuObj = oneMenuList.eq(i);
                var oneMenuNumber = oneMenuObj.find(".layui-colla-content").find("input[type=checkbox]").length;
                var oneMenuCheckedNumber = oneMenuObj.find(".layui-colla-content").find("input[type=checkbox]:checked").length;
                // console.log(oneMenuNumber,oneMenuCheckedNumber)
                if (oneMenuNumber > 0) {
                    if (oneMenuNumber == oneMenuCheckedNumber) {
                        oneMenuObj.removeClass("on");
                        oneMenuObj.children("input[type=checkbox]").prop('checked', true);
                    } else if (oneMenuNumber > oneMenuCheckedNumber && oneMenuCheckedNumber > 0) {
                        oneMenuObj.addClass("on");
                        oneMenuObj.children("input[type=checkbox]").prop('checked', true);
                    } else {
                        oneMenuObj.removeClass("on");
                        oneMenuObj.children("input[type=checkbox]").prop('checked', false);
                    }
                }
                //第二级
                var twoMenuList = oneMenuObj.find(".layui-colla-content").find(".twoMenu");
                for (var j = 0; j < twoMenuList.length; j++) {
                    var twoMenuObj = twoMenuList.eq(j);
                    //获取二级菜单  资源个数和选中个数
                    var twoMetadataNumber = twoMenuObj.find(".layui-input-block").find("input[type=checkbox]").length;
                    var twoMetadataCheckedNumber = twoMenuObj.find(".layui-input-block").find("input[type=checkbox]:checked").length;
                    //获取二级菜单下  资源个数和选中个数
                    var twoMetadataNumber1 = twoMenuObj.next().find("input[type=checkbox]").length;
                    var twoMetadataCheckedNumber1 = twoMenuObj.next().find("input[type=checkbox]:checked").length;
                    if ((twoMetadataNumber + twoMetadataNumber1) > 0) {
                        if ((twoMetadataNumber + twoMetadataNumber1) == (twoMetadataCheckedNumber + twoMetadataCheckedNumber1)) {
                            twoMenuObj.removeClass("on");
                            twoMenuObj.find(".layui-form-label").find("input[type=checkbox]").prop('checked', true);
                        } else if ((twoMetadataNumber + twoMetadataNumber1) > (twoMetadataCheckedNumber + twoMetadataCheckedNumber1) && (twoMetadataCheckedNumber + twoMetadataCheckedNumber1) > 0) {
                            twoMenuObj.addClass("on");
                            twoMenuObj.find(".layui-form-label").find("input[type=checkbox]").prop('checked', true);
                        } else {
                            twoMenuObj.removeClass("on");
                            twoMenuObj.find(".layui-form-label").find("input[type=checkbox]").prop('checked', false);
                        }
                    }
                    //获取三级菜单下 资源个数和选中个数
                    var threeMenuList = twoMenuObj.next().find(".threeMenu");
                    for (var k = 0; k < threeMenuList.length; k++) {
                        var threeMenuObj = threeMenuList.eq(k);
                        var threeMenuNumber = threeMenuObj.find(".layui-input-block").find("input[type=checkbox]").length;
                        var threeMenuCheckedNumber = threeMenuObj.find(".layui-input-block").find("input[type=checkbox]:checked").length;
                        if (threeMenuNumber > 0) {
                            if (threeMenuNumber == threeMenuCheckedNumber) {
                                threeMenuObj.removeClass("on");
                                threeMenuObj.find(".layui-form-label").find("input[type=checkbox]").prop('checked', true);
                            } else if (threeMenuNumber > threeMenuCheckedNumber && threeMenuCheckedNumber > 0) {
                                threeMenuObj.addClass("on");
                                threeMenuObj.find(".layui-form-label").find("input[type=checkbox]").prop('checked', true);
                            } else {
                                threeMenuObj.removeClass("on");
                                threeMenuObj.find(".layui-form-label").find("input[type=checkbox]").prop('checked', false);
                            }
                        }
                    }
                }
            }
        }
        layui.use([ 'element'], function() {
            var element = layui.element;
            element.render();
        });
    };
    //绑定事件
    this.listeningButton = function () {
        //提交
        layuiFunciton.filter({
            types:'form',   //   注：仅支持 from 、table 两种类型  监听 table的 tools
            filterTypes: 'submit',   //
            filterName: 'editUser',
            returnData : function (obj) {
                var refreshData = {};
                //获取所有选中check
                var inputCheckeds = $("#context").find("input[type=checkbox]:checked");
                for(var j=0;j<inputCheckeds.length;j++){
                    var value = inputCheckeds.eq(j).val();
                    if(value!='on'){
                        if(value.indexOf("-")>0){
                            refreshData['sysAuthorityList['+j+'].roleOrUserId'] = $("#id").val();
                            refreshData['sysAuthorityList['+j+'].menuId'] = value.split("-")[0];
                            refreshData['sysAuthorityList['+j+'].metadataId'] = value.split("-")[1];
                            refreshData['sysAuthorityList['+j+'].types'] = 2;
                        }else{
                            refreshData['sysAuthorityList['+j+'].roleOrUserId'] = $("#id").val();
                            refreshData['sysAuthorityList['+j+'].menuId'] = value;
                            refreshData['sysAuthorityList['+j+'].types'] = 2;
                        }
                    }
                }
                var list = $("#editUserForm").serializeArray();
                for(var i =0;i<list.length;i++){
                    refreshData[list[i].name] = list[i].value;
                }
                layuiFunciton.ajaxRequest({
                    url: layuiFunciton.URL + '/sysUser/updateAutority',
                    method:'post',
                    data:refreshData,
                    success:function (data) {
                        layuiFunciton.success("修改成功！",function () {
                            layuiFunciton.closeOpen();
                        });
                    }
                });
            }
        });
    };
};
function pageReady() {
    editUser = new EditUser();
    editUser.init();
    editUser.listening();
    editUser.listeningButton();
}
